//File Header

struct matrix4f;
struct vec3f;
class CGame;

class CPlayer
{
private:
	static CPlayer* m_pInstance;
	matrix4f*	m_mPlayerMat;
	float		m_fMass;
	float		m_fJetPackEnergy;
	float		m_fEnergyRecharge;
	float		m_fEnergySpentTimer;
	bool		m_bJumping;
	bool		m_bIsRecharging;

	//Friends
	friend CGame;

protected:
	void Jump(float fDeltaTime);
	void SetAxes(vec3f Yvec, vec3f Zvec);

public:
	static CPlayer* GetInstance(void);

	void PlayerInit();
	void Update(float fDeltaTime);
	void TranslatePlayer(vec3f v);

	//Accessor
	vec3f GetPlayerPosition(void);
	matrix4f* GetPlayerMat(void);
	bool GetRecharging() {return m_bIsRecharging;}
	
	//Mutators
	void SetMatrix(matrix4f* mat);
	void SetOrigin(vec3f Pos);
	void SetForward(vec3f v);
	void SetJumping(bool b)	{m_bJumping = b;}

};